package com.yypx.dao;

import java.util.List;
import java.util.Map;
import java.util.UUID;

import com.yypx.entity.BaseObject;

public interface PersistentGenericDao<T extends BaseObject, PK> {
	/**
	 * 通过id查询
	 * 
	 * 
	 * @param id
	 *            主键ID
	 * @return
	 */
	T findById(PK id);
	/**
	 * s 检索所有记录
	 * 
	 * s *
	 * 
	 * @return 返回Page对象
	 */
	List<T> selAll();
	
	/**
	 * 返回某联盟下的数据
	 * @param consid
	 * @return
	 */
	List<T> selAll(UUID consid);
	
	/**
	 * 添加新记录
	 * 
	 * 
	 * @param o
	 *            要添加的新对象
	 * @return 添加后的新对象
	 */
	T addNew(T o);

	/**
	 * 更新记录
	 * 
	 * 
	 * @param o
	 *            要更新的对象
	 * @return 更新后的对象
	 */
	T update(T o);

	/**
	 * 删除记录
	 * 
	 * @param id
	 *            主键ID
	 */
	void delById(PK id);
	/**
	 * 执行存储过程
	 * 
	 * 
	 * @param o
	 *            要更新的对象
	 * @return 更新后的对象
	 */
	PK executionStoredProcedureByAdd(Map map);
	/**
	 * 升降
	 * 
	 * 
	 * @param id
	 *            NO
	 * @return
	 */
	T upTheNo(int id,int type);
	/**
	 * 升降
	 * 
	 * 
	 * @param id
	 *            NO
	 * @return
	 */
	List<T> selAllByCondition(Map map);
	/**
	 * 修改排序
	 * 
	 * 
	 * @param id
	 *            NO
	 * @return
	 */
	PK upOrderNo(Map map);
	/**
	 * 修改排序
	 * 
	 * 
	 * @param id
	 *            NO
	 * @return
	 */
	int selCountByCondition(Map map);
	
	/**
	 * 对记录进行停用
	 * @param id
	 */
	void stopuse(PK id);
}
